Method and apparatus for sending information via silent symbol coding over under-utilized channels in wireless systems

ABSTRACT

A method and apparatus is disclosed herein for sending information over under-utilized channels in wireless systems. In one embodiment, a method for use in a cellular system in which a channel allocated to a primary user is underutilized at times, comprises: creating a unique 0-1 valued permutation code to transmit bits of a secondary user on a channel of the primary user; creating one or more codewords based on a first set of symbols to be transmitted for the primary user and the permutation code; and transmitting the one or more codewords on the channel.

PRIORITY

The present patent application claims priority to and incorporates by reference the corresponding provisional patent application Ser. No. 61/219,243, titled, “A Method and Apparatus for Sending Information via Silent Symbol Coding over Under-utilized Channels in Wireless Systems,” filed on Jun. 22, 2009.

FIELD OF THE INVENTION

The present invention relates to the field of wireless data communication, cellular systems, and coding; more particularly, the present invention relates to sending information via silent symbol coding over under-utilized channels in wireless systems.

BACKGROUND OF THE INVENTION

Broadband wireless systems are typically designed for per cell capacity maximization with some fairness constraints for individual users. Even when the fairness constraints are taken into account, the basic assumption is that the allocated rate can be fully utilized. However, practical systems have limitations in terms of smallest chunks of bandwidth allocation. For instance, in HSDPA systems, the smallest time unit a given channel (e.g., spreading code, frequency band, etc.) dedicated to a particular user (say Alice) is 2 milliseconds long. Suppose B bits are waiting in Alice's transmission queue and Alice's channel quality is such that this smallest unit can deliver W bits, which is strictly more than B bits. Therefore, the system wastes (W−B) bits by either going into an idle mode for the remainder of the time slot or by sending padded bits. Note that the main problem here is that the system cannot reassign the channel to another user and partially reuse since the scheduling decisions are done on a per slot basis in this example.

SUMMARY OF THE INVENTION

A method and apparatus is disclosed herein for sending information over under-utilized channels in wireless systems. In one embodiment, a method for use in a cellular system in which a channel allocated to a primary user is underutilized at times, comprises: creating a unique 0-1 valued permutation code to transmit bits of a secondary user on a channel of the primary user; creating one or more codewords based on a first set of symbols to be transmitted for the primary user and the permutation code; and transmitting the one or more codewords on the channel.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention will be understood more fully from the detailed description given below and from the accompanying drawings of various embodiments of the invention, which, however, should not be taken to limit the invention to the specific embodiments, but are for explanation and understanding only.

FIG. 1 illustrates, in a typical wireless system, a given base station allocating each of its users a set of channels in the form of frequency bands, time slots, and spreading codes in a scheduling interval.

FIG. 2A illustrates the message blocks for Alice (primary user) and Bob (secondary user) being used together to create a permutation of Bob's symbols padded by silent symbols to completely fill the available symbol locations.

FIG. 2B illustrates an alternative embodiment of a coding arrangement that uses silent symbol coding.

FIG. 3 illustrates a block diagram of high-level actions at a primary user's receiver.

FIG. 4 illustrates a block diagram of high-level actions at a secondary user's receiver.

FIG. 5 illustrates a block diagram of high-level actions at a secondary user's receiver with an extra signal processing operation when z₂ can be decoded.

FIG. 6A illustrates a single cell scenario.

FIG. 6B illustrates a multiple-cell scenario.

FIG. 6C illustrates a multiple-cell scenario and the coordination of resource allocation based on queue backlogs and channel state information.

FIG. 7 illustrates decoding at a secondary user's receiver using permutation coding to learn about the interference and perform interference cancellation to boost up its own reliability or capacity over the same channel.

FIG. 8 illustrates decoding at a secondary user's receiver in which interference cancellation is used over the primary channel of the secondary user, where primary and secondary channels are orthogonal to each other.

FIG. 9 illustrates a block diagram of one embodiment of a base station.

DETAILED DESCRIPTION OF THE PRESENT INVENTION

New techniques are disclosed herein for utilizing partially utilized wireless channel resources to send more information to other users who observe congestion. Embodiments of the invention achieve such utilization by inserting silent symbols between the symbols to be actually transmitted over the partially used wireless channel. The positions of the silent symbols in a resource block carry information to a user other than the user to whom the particular resource block is addressed.

A result of using the techniques disclosed herein is to assist wireless users who do not get enough data rates from the resources allocated to them at a given base station (or equivalently wireless access point or wireless transmitter) by sending them more information over under-utilized resources at the same and/or other base station(s).

In the following description, numerous details are set forth to provide a more thorough explanation of the present invention. It will be apparent, however, to one skilled in the art, that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring the present invention.

Some portions of the detailed descriptions which follow are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.

It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.

The present invention also relates to apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.

The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear from the description below. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein.

A machine-readable medium includes any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer). For example, a machine-readable medium includes read only memory (“ROM”); random access memory (“RAM”); magnetic disk storage media; optical storage media; flash memory devices; etc.

Overview

In FIG. 1, a wireless system with a scheduling frame of T time slots and F frequency sub-bands is depicted. In a typical wireless system, a given base station allocates each of its users a set of channels in the form of time slots, frequency bands, and spreading codes within a scheduling frame. In FIG. 1, as an illustrative example, the blocks 101 are assigned to a particular user (say Alice) by the base station A. Base station A communicates with Alice by mapping her bit-stream into a non-zero sequence of symbols and sending individual symbols over the allocated resources with each symbol having the same symbol duration T_(sym). Regardless of whether the resource blocks assigned to a user are physically contiguous or not, they can be represented logically as a sequence of symbols with each symbol having a unique location in the source block. For instance, in FIG. 1, the resource blocks assigned to Alice by base station A can be mapped onto n symbol locations. The resource blocks assigned to Alice by base station A are under-utilized if Alice does not have enough number of bits waiting in her transmission queue at base station A. For instance, if base station A is using QPSK modulation at the channel quality Alice is experiencing and base station A has B=500 bits to be transmitted to Alice, k=250 QPSK symbols suffice to send all 500 bits. If n>k, obviously base station A cannot utilize all n symbols. Base station A either keeps silent for the remaining (n−k) symbol duration or send padded bits as null information.

In one embodiment, base station A makes a dual assignment for a given set of resource blocks. Each set of resource blocks are first assigned to a primary user. If the set of resource blocks are under-utilized by the primary user, then they are also assigned to a secondary user. The bits of the primary user are mapped onto a sequence of symbols using a constellation with non-zero constellation points (i.e., if S is the constellation and sεS, then s^(H)s>0, here s^(H) is the conjugate transpose of the column vector s). The primary user symbols and the secondary user bits are then used together to determine a unique permutation codeword where silent symbols are inserted before, after, and/or in between the symbols generated from the primary user bits. Base station A transmits the permutation codeword starting from the leftmost symbol: if the next symbol to be transmitted is a silent symbol, base station A does not send anything for the next symbol duration. If the next symbol is not a silent symbol, base station A transmits the signal waveform corresponding to that symbol. FIG. 2A depicts an example of how primary user (Alice) and secondary user (Bob) information bits are combined together to create such a unique permutation codeword using both primary and secondary user bits. That is, the message block for Alice (primary user) and Bob (secondary user) are used together to create a permutation of Bob's symbols padded by silent symbols to completely fill the available symbol locations. Referring to FIG. 2A, L bits that are being sent to Alice are converted into K symbols and M bits being sent to Bob are received by coder 201, which performs a silent symbol (permutation) coding to generate n symbols.

One method of silent symbol coding performed by coder 201 proceeds as follows. When the primary user's resource blocks are fully utilized, the codeword to be transmitted by the base station includes no silent symbol and only the symbols generated from the primary user's bit stream are sent out. In one embodiment, whenever primary user's resource blocks are under-utilized (n>k), the following set of actions is taken:

-   -   1. Primary user's message of length L bits waiting in the         transmission queue of the base station is mapped onto a bit         stream of 0's and 1's. In one embodiment, if the message is in         binary format, the mapping operation need only be reading L bits         from the primary user's queue.     -   2. Primary user's bit stream is mapped onto k modulation symbols         s₁, s₂, . . . , s_(k) based on the current symbol constellation         that the base station is using for the primary user as dictated         by the channel state information and rate control algorithm         being used in the system.     -   3. The total number n of symbols is used to construct a codeword         CW₀ where the first k entries are 1's and the rest of the (n−k)         entries are all 0's. i.e., CW₀={w₀₁w₀₂ . . . w_(0n)} with         w_(0i)=1 for i=1, . . . , k and w_(0i)=0 for i=(k+1), . . . , n.     -   4. n and k are used to compute

${\Omega = {\begin{pmatrix} n \\ k \end{pmatrix} = \frac{n!}{{k!} \cdot {\left( {n - k} \right)!}}}},$

where Ω denotes the total number of different unique permutations of the codeword CW₀.

-   -   5. M bits are fetched from the head of the transmission queue         for the secondary user such that the first bit read from the         queue is the least significant bit and the M-th bit read from         the queue is the most significant bit forming the codeword         CW₁={w₁₁w₁₂ . . . w_(1M)}. M can take a value of either └log₂Ω┘         or 1+└log₂Ω┘, where └•┘ denotes the floor operation on its         argument. Specifically, in one embodiment, M is equal to         1+└log₂Ω┘ if the decimal representation of CW₁ (denoted as         CW_(1,decimal)) is less than or equal to (Ω−1), i.e.,         CW_(1,decimal)=w₁₁+2w₁₂+2²w₁₃+ . . . +2^((M−1))W_(1M)≦(Ω−1), and         w_(1M)=1 or w_(1M)=0 and w₁₁−2w₁₂+2²w₁₃+ . . .         +2^((M−2))w_(1(M−1))+2^((M−1))>(Ω−1). In other words if the most         significant bit is zero, replacing it with one should not be         another eligible code. Otherwise, M is equal to └log₂Ω┘. For         purposes herein, CW_(1,decimal) is referred to as the index of         CW₁ and i is used in place of CW_(1,decimal). The index i takes         values in the range [09, Ω−1] and the set of CW₁'s is enumerated         as CW₁(0), CW₁(1), . . . , CW₁(i), . . . , CW₁(Ω−1).     -   6. CW₁ constructed in the previous operation is used to generate         a unique codeword X by computing a unique permutation of CW₀.         Uniqueness here implies that two different codeword in the set         of CW₁ will be mapped to two distinct permutation codes. In one         embodiment, the algorithmic operations are as follows:         -   a. CW_(1,decimal) is computed from CW₁ and assigned to i.         -   b. i is mapped onto {tilde over (X)}(i)=Ω−1−i which in             return is expanded in a one-to-one fashion into a unique             (n−k)-term representation {x_(n−k), x_(n−k−1), . . . , x₁}             such that

${\overset{\sim}{X}(i)} = {\begin{pmatrix} x_{n - k} \\ {n - k} \end{pmatrix} + \begin{pmatrix} x_{n - k - 1} \\ {n - k - 1} \end{pmatrix} + \ldots + \begin{pmatrix} x_{2} \\ 2 \end{pmatrix} + \begin{pmatrix} x_{1} \\ 1 \end{pmatrix}}$

and x_(j)≧0 for j=1, . . . , s. In one embodiment, the procedure to compute the (n−k) is straightforward by using the following recursive operation:

-   -   x_(n−k) is the greatest integer such that

${\begin{pmatrix} x_{n - k} \\ {n - k} \end{pmatrix} \leq {\overset{\sim}{X}(i)}};x_{n - k - 1}$

is the greatest integer such that

${\begin{pmatrix} x_{n - k - 1} \\ {n - k - 1} \end{pmatrix} \leq {{\overset{\sim}{X}(i)} - \begin{pmatrix} x_{n - k} \\ {n - k} \end{pmatrix}}};\ldots \mspace{14mu};\begin{pmatrix} x_{r} \\ l \end{pmatrix}$

is the greatest integer such that

${\begin{pmatrix} x_{r} \\ l \end{pmatrix} \leq {{\overset{\sim}{X}(i)} - {\sum\limits_{j = {r + 1}}^{n - k}\begin{pmatrix} x_{j} \\ j \end{pmatrix}}}};\ldots \mspace{14mu};\begin{pmatrix} x_{1} \\ 1 \end{pmatrix}$

is the greatest integer such that

$\begin{pmatrix} x_{1} \\ 1 \end{pmatrix} \leq {{\overset{\sim}{X}(i)} - {\sum\limits_{j = 2}^{n - k}{\begin{pmatrix} x_{j} \\ j \end{pmatrix}.}}}$

-   -   c. The locations loc_(j) (j=1, . . . , n−k) are computed such         that loc_(j)=n−1−x_(n−k+1−j). Denote the set of loc_(j)'s         computed for index i as LOC(i).     -   d. Codeword X={x₀, x₁, . . . , x_(n−1)} is constructed by         setting x_(j)=0 if jεLOC(i) and x_(j)=1 otherwise. In the         constructed codeword, 0's represent the silent symbols and 1's         represent the actual epochs symbols of the primary user is         transmitted. In other words, the base station parses the         constructed codeword X from left to right (as long as the orders         are consistent, left to right is not a requirement but just a         convention); if i-th bit is 0, the transmitter keeps silent for         a symbol period, if i-th bit is 1, the transmitter sends the         next symbol s_(j) in the usual order they are supposed to be         transmitted. This is equivalent to sending a codeword CW={o . .         . os₁o . . . os₂o . . . os_(j)o . . . os_(k)o . . . o} where the         locations of silent symbols “o” are the same as the locations of         zeros in X.

The procedure outlined above for encoding an index i to a unique permutation X (and decoding i from a given X) is a well known technique and a more generalized form can be found in Data & McLaughing, “An Enumerative Method for Runlength-limited Codes: Permutation Codes,” in IEEE Transactions on Information Theory, vol. 45, no. 6, pp. 2199-2204, 1999. The above enumeration procedure can be replaced by other techniques as long as M bits of the secondary users and k symbols of the primary user can be mapped onto a codeword CW in a one-to-one fashion as depicted in FIG. 2A.

Note that the coding operation may be performed wherever the baseband processing is performed. This may be in a base station, access point or other node in the wireless communication system.

When the base station transmits CW neither the primary nor the secondary users know about the locations of the silent symbols and they both have to identify the locations of the silent symbols correctly in order to decode the permutation code at the secondary user's receiver and to decode the symbols s₁, s₂, . . . , s_(k) at the primary user's receiver.

Note that the secondary user knows that data may be sent on the primary user's channel because the base station controller notifies the secondary user when allocating the resources (e.g., channel) to the primary user and tells the both the primary user and the secondary user what coding profile (e.g., permutation coding is enabled or disabled) is to be used. This notification may be performed as part of the profile being provided by the controller to the primary and secondary users.

FIG. 2B is an alternative embodiment depicting silent symbol/permutation coding. Referring to FIG. 2B, L bits to Alice are converted into k symbols 221. These are input into channel coder 240 that performs channel coding that produced encoding symbols 222, which are sent to silent symbol (permutation) coding 210. Also, M bits for Bob are input along with an n-bit 0-1 base permutation code into permutation computation block 241. The output of permutation computation block 241 is input with n encoding symbols 222 to multiplier 212, which performs symbol-by-symbol multiplication between the output of permutation computation block 241 and n encoding symbols 222, resulting in transmit codewords 223.

In the following description, the channel gains will be assumed to be known at the receiver and hence the actual values are not important for this disclosure. On the other hand, the transmitters are assumed to know either the channel gains or the channel state information for better pairing of the primary and secondary users. FIG. 3 is a high-level block diagram of a primary user's receiver depicting the sequence of actions taken at the receiver user after converting the received signal to the base-band signal y=CW+z₁+n₁. CW denotes the codeword generated at the base station (i.e., sequence of silent symbols interspersed with the actual symbols sent to the primary user), z₁ denotes the possible interference from other radio signals over the same resource blocks CW is sent over, and n₁ denotes the noise added at the primary user's terminal. The primary user first detects the silent symbol positions in the received signal y using silent symbol detector 301 and hence permutation code X is decoded first. These positions are removed from the received n by 1 vector y by silent symbol remover 302 yielding a new k by 1 vector y=S+z₁+n₁, where S={s₁s₂ . . . s_(k)} and z₁ as well as n₁ are updated interference/noise terms such that dimensions corresponding to the silent epochs in the original vectors are filtered out.

At this point, all the artifacts of permutation coding are removed and the primary user's receiver 303 continues with the usual decoder operations based on the symbol constellation S. The critical operation in this overall procedure is the operation in which the silent symbol positions are identified. One practical way of such identification is to apply symbol by symbol hypothesis testing, which is well-known. Let y[i]=CW[i]+z₁[i]+n₁[i] and y={y[1], y[2], . . . , y[n]}. Denote hypothesis H₀ as “CW[i] is a silent symbol” and H₁ as “CW[i] is not a silent symbol”. In one use case, the identification comprises maximum likelihood (ML) detection as follows:

Decide H₀ if P(Y[i]|CW[i]=o)≧P(y[i]|CW[i]≠o)

Decide H₁ otherwise.

Above P(i|j) refers to “probability that i is true given j is true”. For purposes herein, when y[i] is a continuous random variable, one should replace P(i|j) with the probability density function (pdf) f(i|j). Note that P(y[i]|CW[i]=o)=P(z₁[i]+n₁[i])(f(y[i]|CW[i]=o)=f(z₁[i]+n₁[i])). When both the interference and the noise term are independent Gaussian random processes, their sum is also Gaussian and f(z₁[i]+n₁[i]) simplifies to the pdf of a Gaussian random variable. Similarly,

${{P\left( {y\lbrack i\rbrack} \middle| {{{CW}\lbrack i\rbrack} \neq o} \right)} = {\frac{1}{\Lambda }{\sum\limits_{s \in \Lambda}{P\left( {\left. {y\lbrack i\rbrack} \middle| {{CW}\lbrack i\rbrack} \right. = s} \right)}}}},$

provided that each sεA is equally likely. Assuming the MAP rule instead of ML and using the approximation P(H₀)=k/n (hence P(H₁)=1−k/n), another detector would be:

Decide H₀ if P(y[i]|CW[i]=o)·P(H₀)≧P(y[i]|CW[i]≠o)·P(H₁)

Decide H₁ otherwise.

The MAP rule requires the knowledge of k at the receiver. After n hypothesis testing, X can be constructed by inserting 0 at the positions where H₀ is decided and inserting 1 at the positions where H₁ is decided. If k is known at the receiver and hypothesis testing results in more than k 1's, the positions with the k highest likelihood ratios of (P(y[i]|CW[i]≠o)·P(H₁))/(P(y[i]|CW[i]=o)·P(H₀)) are picked as the 1's and the rest of the entries are set to 0's. Finally, the 0 valued positions are filtered out in vector y and the decoding operation continues for s_(i)'s. Note that after/during the decoding of s_(j)'s, the hypothesis testing can be iteratively refined if errors in s_(j)'s are detected (for instance due to checksums).

Feedback 310 may be used to notify silent symbol detector 301 when the detection results has not correctly identified the silent symbols. This may occur if too many or too few symbols are identified.

In an alternative embodiment, the decoding at the primary user may be performed by directly decoding the incoming symbol stream assuming no knowledge of the permutation coding. This can be done since the permutation coding is another type of noise (albeit a multiplicative one like fading coefficients). This is described in more detail below.

FIG. 4 is a high-level block diagram of a secondary user's receiver depicting the sequence of actions taken at the receiver after converting the received signal to the base-band signal y=CW+z₂+n₂. In this particular case, similar to the primary user, the secondary user first performs silent symbol detection using silent symbol detector 401 through hypothesis testing to construct X. The detection can be symbol by symbol and, in one embodiment, ML or MAP rules are exactly the same as outlined for the primary user but using the statistics of z₂+n₂ instead of z₁+n₁. Decoder 402 receives and performs permutation code decoding to generate CW₁.

As with FIG. 3, feedback may be used.

In the case where both z₂ constellation (e.g., when secondary user of base station that transmits CW is a primary user over the same resource blocks at another base station, hence z₂ also carries information of this user) and constellation of the CW elements (i.e., each element of CW is either sεA or s=o) are known, the expressions may be refined as follows:

${P\left( {\left. {y\lbrack i\rbrack} \middle| {{CW}\lbrack i\rbrack} \right. = o} \right)} = {\frac{1}{Z_{2}}{\sum\limits_{z \in Z_{2}}{P\left( {\left. {{z_{2}\lbrack i\rbrack} + {n_{2}\lbrack i\rbrack}} \middle| {z_{2}\lbrack i\rbrack} \right. = z} \right)}}}$ $\begin{matrix} {{P\left( {y\lbrack i\rbrack} \middle| {{{CW}\lbrack i\rbrack} \neq o} \right)} = {\frac{1}{\Lambda }\frac{1}{Z_{2}}{\sum\limits_{s \in \Lambda}{\sum\limits_{z \in Z_{2}}{P\left( {{{CW}\lbrack i\rbrack} + {z_{2}\lbrack i\rbrack} +} \right.}}}}} \\ {\left. {n_{2}\lbrack i\rbrack} \middle| {{CW}\lbrack i\rbrack} \right.} \\ \left. {{= s},{{z_{2}\lbrack i\rbrack} = z}} \right) \end{matrix}$

Note that the probability expressions in the summation terms are replaceable by the pdf's, and given noise n₂[i] is Gaussian distributed, pdf's can be computed in a closed form.

FIG. 5 depicts another case in which the CW term can be treated as interference and z₂ is decodable at the secondary receiver even when CW is treated as noise. Referring to FIG. 5, one can first decode z₂ using decoder 501, subtract from y using subtractor 502 to obtain CW+n₂ and proceed with the decoding process setting z₂[i]=0 and using the Delta-Dirac function as the pdf, i.e., f(z₂=z)=δ(z) (in other words probability that z₂ is zero is one and anything else is zero). That is, silent symbol detector 503 receives CW+n₂ and generates permutation code X. Decoder 504 performs permutation code decoding on X to generate CW₁. This method is most beneficial when a user has a much weaker reception from the base station for which it is the secondary user than from the base station for which it is the primary user.

Feedback may be used to notify other portions of the receiver where errors in decoding have occurred, such as those mentioned above.

The secondary user performs permutation code decoding for the input X, which is the only portion that carries useful information for the secondary user. In one embodiment, the permutation code decoding steps are as follows:

-   -   1. Find the number of 1's in vector X and store the value as k.         Save n as the length of the vector X. Compute

$\Omega = {\begin{pmatrix} n \\ k \end{pmatrix} = {\frac{n!}{{k!} \cdot {\left( {n - k} \right)!}}.}}$

-   -   2. Parsing X from left to write, construct the set of 0         locations in X and denote this set as LOC. Since X has exactly         (n−k) 0's, LOC is of size (n−k) with entries loc₁, loc₂, . . . ,         loc_((n−k)) in increasing order with the property 0<loc₁<loc₂< .         . . <loc_(n−k)≦(n−1).     -   3. Compute index i using the following expression:

$i = {\begin{pmatrix} n \\ k \end{pmatrix} - 1 - {\sum\limits_{j = 1}^{({n - k})}\begin{pmatrix} {n - 1 - {loc}_{n - k - i + 1}} \\ i \end{pmatrix}}}$

-   -   4. Assign index i to rCW_(1,decimal).     -   5. Convert rCW_(1,decimal) to base-2 form using 1+└log₂Ω┘ bits.         If the most significant bit is 0 and replacing it with 1 would         have a decimal value smaller than or equal to (Ω−1), delete the         most significant bit. Store the value in rCW₁ and label it as         the decoded bits sent from the transmission queue of the         secondary user at the base station. The least significant bit is         the 1^(st) bit and the most significant bit is the M-th bit sent         out from the transmission queue of the secondary user.

If X is decoded error-free, then rCW₁ is the same as CW₁ and the bits sent for the secondary user are successfully received. The secondary user concatenates all such received codewords and parses the bits to divide the bits into blocks and packets for further processing at the upper layers. Since there is a certain probability of error in the decoding process and some blocks/packets can be corrupted, in one embodiment, error detection codes, error correction codes, and/or erasure coding techniques typically should accompany this permutation code decoding.

From the wireless resource management point of view, embodiments of the invention are useful in many different scenarios some of which are depicted in FIGS. 6A through 6C. In FIG. 6A, the techniques disclosed herein are integrated with wireless resource allocation decisions in a given single cell. Referring to FIG. 6A, a base station BS, is shown communicably coupled to a controller 601 and wirelessly coupled to user terminals, Alice and Bob, with channel states h₁₁ and h₁₂ respectively, for sending bits R₁ and R₂ respectively. Every user is assigned a set of resource blocks as the primary users in a scheduling interval across time slots, bands, and spreading codes. The base station B, checks the resources that will be under-utilized given the current backlogs in user queues and the number of bits to be transmitted to each user in the next scheduling interval. Each such resource then is assigned to exactly one secondary user (note that the same user can be secondary users over multiple orthogonal resource blocks). The assignments to secondary users take into account many factors such as channel gain estimates over these set of resources and the queue backlogs.

Suppose there are L users in the system and the wireless resources are partitioned into L orthogonal resource blocks each assigned to users in a one to one fashion. This initial assignment can be done with respect to any fairness, prioritization, and/or optimization objective and it is independent from embodiments of the invention. Suppose a user u has a queue backlog of W_(u)[i−1] bits before the i-th scheduling interval and over the resource block for which it is the primary user, R_(u)[i] bits can be sent. Hence, after the resource assignment to primary users, each user will have a backlog of B_(u)=max {0, W_(u)[i−1]−R_(u)[i]}. Accordingly, the base station creates a list U of users who have positive backlogs even after the primary resource assignment, i.e., u is in U if and only if B_(u)>0. Suppose also that among L orthogonal resource blocks G of them are underutilized and have Ω₁, . . . , Ω_(G) as the number of permutation codes they can support leading to rates r₁=log₂Ω₁, . . . , r_(G)=log₂Ω_(G). For each user u in U, let p_(u,i) denote the successful decoding probability of permutation codes over research block i. This number typically depends on the channel gains from the base stations to the particular secondary user, the modulation/coding levels being used, noise and other interference power. p_(u,i)'s can be obtained through upper-bounds, approximations, simulations, empirical offline evaluations, and/or online learning. Given these definitions, one can use many different methods to assign underutilized resource blocks to individual users as described next.

In one method, resource assignment to individual backlogged users is done such that, after the assignment, maximum backlog across users is minimized. Each underutilized resource blocks are first placed in an assignment set A that has exactly G elements. For each user u in U, an ordered set O_(u) is created whose elements are r_(i)′p_(u,i) in descending order. In each iteration, the method assigns one resource block from assignment set A as follows.

-   -   1. Pick the user with the most backlog B_(u), e.g., u*.     -   2. Take the resource block iεA with the highest r_(i)·p_(u*,i)         for user u* and assign user u* as the secondary user for i.     -   3. Remove i from A, i.e., A:=A\{i}.     -   4. Update B_(u*) as B_(u*):=max{0,B_(u*)−r_(i)·p_(u*,i)} and         continue with step 1 if A≠{ }, i.e., A is not an empty set.

The above allocation strategy guarantees stability provided that there exists a strategy that stabilizes the buffers (i.e., no buffer has an average backlog that grows in an unbounded fashion). Other methods with different objectives lead to different secondary user assignment strategies. One method that tries to maximize the throughput over the secondary use assigns each resource block to the user that has the maximum r_(i)·p_(u,i) among all users over this resource block. One can also apply proportional fair sharing (PFS) or exponential rules widely known in the literature to assign the resources with slight modifications. PFS metric or other metrics are computed per (user, resource block) pair and the one that maximizes the metric becomes the assignment pair, after which the metrics are recomputed with updated metrics over the unassigned resource blocks.

FIG. 6B depicts a multi-cell scenario where Bob is a primary user for transmissions from its own cell and secondary user for transmission from another cell. Referring to FIG. 6B, controller 620 is communicably coupled to base stations BS₁ and BS₂. Base stations BS₁ and BS₂ are communicably coupled wirelessly to user terminals such as Alice and Bob. For example, base station BS₁ wirelessly communicates with R₁ bits to using a channel with channel state h₁₁ and R₂ bits to Bob using a channel with channel state h₁₂. Also, base station BS₂ wirelessly communicates with R1 bits to Alice using a channel with channel state h₂₁ and R2 bits to Bob using a channel with channel state h₂₂. Unlike the scenario in FIG. 6A, the primary and secondary users of a given resource block do not belong to the same cell. If a resource reuse factor of 1 is in place, then in this scenario a user can be both a primary user and a secondary user for the same resource block, but with respect to distinct base stations.

FIG. 6C shows even a more general feasible application scenario in which the techniques described herein can be used. Referring to FIG. 6C, a controller node 630 behind the cell tower keep user queues 631 ₁-631 _(M) and manages all the resource allocation decisions at each cell. Referring to FIG. 6C, Alice and Mark have only assignments as primary users and they are under-utilizing their resource blocks. If their resource block is orthogonal, then Bob can simultaneously listen to both of them in a non-interfering fashion and become a secondary user for more than one resource block assigned at different locations. On top of it, Bob has its own primary resource assignment from his own base station (e.g., this typically means the base station with the strongest signal strength for Bob).

Another method disclosed herein is to use underutilized resources for interference cancellation purposes. FIG. 7 shows the decoding procedure for the case when a user is both a primary user and a secondary user for the same resource block assigned by different base stations forming an interference channel CW+z₂+n₂, where CW is the interference from the other cell, z₂ is the desired signal from user's base station, and n₂ is the interference. The interference channel CW+z₂+n₂ is input to both silent symbol detector 701 and interference canceller 702. The constructed permutation codeword X output from silent symbol detector 701 is input into permutation code decoder 703 and interference replicator 704. Permutation code decoder 703 performs permutation code decoding. The permutation coding as disclosed herein can be utilized as follows. The permutation code carries information about the symbols s₁, . . . , s_(k) which are the actual interference terms (the rest of n−k symbols in CW are silent and causes no interference). Depending on the achievable rate of the permutation code, all or a subset of these k symbols can be encoded and embedded in CW. Then the decodable portion can be subtracted from CW+z₂+n₂ by interference canceller 702 mitigating and even (if enough capacity exists) completely eliminating the interference CW at the secondary user, thereby outputting z₂+n₂ to receiver 705, which generates z₂ therefrom. This technique can be used towards increasing the reliability or pushing the rate of z₂ to a higher bit rate to achieve higher capacity over the primary resource of the secondary user.

FIG. 8 shows another interference cancellation scenario where the primary and secondary resource blocks at a receiver are on orthogonal resources. Suppose receiver is the secondary user for the resource block over which CW+z₂+n₂ is delivered and it is the primary user for the resource block over which z₃+z₄+n₃ is sent. z₂ and z₄ are the interference terms while n₂ and n₃ are the noise terms over these resource blocks. CW carries the permutation code and z₃ is the information sent to the receiver as the primary users. CW is used here to carry information about z₄ which is a transmission from another cell in the same system. Depending on the achievable rates as secondary user over one or multiple resource blocks, all or part of z₄ can be recovered and cancelled from the received signal using silent symbol detector 701, permutation code decoder 703 and interference replicator 704, as is done in FIG. 7. Thus, either z₃ can be decoded at a much higher reliability level or a higher capacity constellation/code combination can be utilized to increase the capacity over the primary channel allocation to this user.

Efficient Enumeration and De-Numeration of Distinct Permutations

Efficient enumeration and de-numeration of distinct permutations are possible due to the unique radix representation of any non-negative integer as stated by the following result: Theorem 3.1: Every non-negative integer i has a unique l term representation {y₁ . . . , y_(l)} such that

${i = {\begin{pmatrix} {y\; 1} \\ 1 \end{pmatrix} = {\begin{pmatrix} {y\; 2} \\ 2 \end{pmatrix} = {\ldots + \begin{pmatrix} {y\; 1} \\ l \end{pmatrix}}}}},$

where 0≦y₁<y₂< . . . <y_(l) (using the convention that

$\left. {\begin{pmatrix} n \\ k \end{pmatrix} = {{0\mspace{14mu} {if}\mspace{14mu} n} < k}} \right)$

This result is fundamental in uniquely indexing each permutation. Given a binary sequence of length n with exactly l=(n−k) zeros, {y1, . . . , y_((n−k))} correspond to the locations of 0's in increasing order for this binary sequence. Since distinct permutations of (n−k) zeros and k ones results in different {y₁, . . . , y_((n−k))} sequence, which according to the theorem above maps to a unique non-negative integer, each distinct permutation is uniquely enumerated. Conversely, given an index number

$i \in \left\lbrack {0,{\begin{pmatrix} n \\ k \end{pmatrix} - 1}} \right\rbrack$

and according to the same theorem, a unique expansion {y1, . . . , y_((n−k))} can be found that will provide the positions of zeros in a binary sequence of length n, hence a unique permutation. (To be more rigorous, it is shown that y_((n−k))≦(n−1). If y_((n−k))>(n−1) were true, then

${i \geq \begin{pmatrix} n \\ {n - k} \end{pmatrix}} = \begin{pmatrix} n \\ k \end{pmatrix}$

contradicting with the assumption that

$\left. {i \in \left\lbrack {0,{\begin{pmatrix} n \\ k \end{pmatrix} - 1}} \right\rbrack} \right)$

The following enumeration and de-numeration algorithms are various embodiments.

Algorithm A1 [Enumeration Algorithm] INPUT: Arbitrary permutation Π_(i) of CW₀ = {11 . . . 10 . . . 0} of which the first k positions are all 1's and the remaining (n − k) positions are all 0's. $\quad\begin{matrix} {{{{OUTPUT}\text{:}\mspace{14mu} A\mspace{14mu} {unique}\mspace{14mu} {index}\mspace{14mu} {number}\mspace{14mu} i} \in {\left\lbrack {0,{\begin{pmatrix} n \\ k \end{pmatrix} - 1}} \right\rbrack \mspace{14mu} {such}\mspace{14mu} {that}\mspace{14mu} i}} = {j\mspace{14mu} {if}\mspace{14mu} {and}}} \\ {{{only}\mspace{14mu} {if}\mspace{14mu} \Pi_{i}} = {\Pi_{j}.}} \end{matrix}$ ${{STEP}\text{-}1\text{:}\mspace{14mu} i} = {\sum\limits_{j = 1}^{({n - k})}\begin{pmatrix} {{location}\left\lbrack {0,j} \right\rbrack} \\ j \end{pmatrix}}$

The location[0, l ] function refers to the position of the l-th zero in the binary sequence of length n and takes values in {0, 1, . . . , (n−1)}.

Algorithm A2 [De-numeration Algorithm] ${{INPUT}\text{:}\mspace{14mu} {An}\mspace{14mu} {index}\mspace{14mu} {number}\mspace{14mu} i} \in {\left\lbrack {0,{\begin{pmatrix} n \\ k \end{pmatrix} - 1}} \right\rbrack.}$ OUTPUT: A unique permutation II_(i) of CW₀ such that Π_(i) = Π_(j) if and only if i = j. ${{STEP}\text{-}1\text{:}\mspace{14mu} {Set}\mspace{14mu} y_{({n - k})}\mspace{14mu} {as}\mspace{14mu} {the}\mspace{14mu} {greatest}\mspace{14mu} {integer}\mspace{14mu} {such}\mspace{14mu} {that}\mspace{14mu} \begin{pmatrix} y_{({n - k})} \\ {n - k} \end{pmatrix}} \leq {i.\mspace{14mu} {Then}}$ $\quad\begin{matrix} {{{recursively}\mspace{14mu} {compute}\mspace{14mu} y_{l}\mspace{14mu} {as}\mspace{14mu} {the}\mspace{14mu} {greatest}\mspace{14mu} {integer}\mspace{14mu} {such}\mspace{14mu} {that}\mspace{14mu} \begin{pmatrix} y_{i} \\ l \end{pmatrix}} \leq {i{\sum\limits_{j = {l + 1}}^{n - k}{for}}}} \\ {{l = {n - k - 1}},\ldots \mspace{11mu},1.} \end{matrix}$ STEP-2: Set location[0, l] = y_(l).

The following example shows enumeration and de-numeration over a short instance. Suppose CW₀={11111000} with n=8 and k=5. We have

$\begin{pmatrix} 8 \\ 5 \end{pmatrix} = 56$

distinct permutations indexed from 0 to 55. For instance Π={10111001} corresponds to y₁=1, y₂=5, y₃=6 resulting in

${\begin{pmatrix} {y\; 1} \\ 1 \end{pmatrix} + \begin{pmatrix} {y\; 2} \\ 2 \end{pmatrix} + \begin{pmatrix} {y\; 3} \\ 3 \end{pmatrix}} = {{\begin{pmatrix} 1 \\ 1 \end{pmatrix} + \begin{pmatrix} 5 \\ 2 \end{pmatrix} + \begin{pmatrix} 6 \\ 3 \end{pmatrix}} = {{1 + 10 + 20} = 31.}}$

Now, consider the index i=31 and find the corresponding permutation. The largest y3 that satisfy

${\begin{pmatrix} {y\; 1} \\ 1 \end{pmatrix} + \begin{pmatrix} {y\; 3} \\ 3 \end{pmatrix}} < 3$

is 6; the largest y₂ that satisfy

${{\begin{pmatrix} {y\; 2} \\ 2 \end{pmatrix} < {31 - \begin{pmatrix} 6 \\ 3 \end{pmatrix}}} = {11 = {2\mspace{14mu} {is}\mspace{14mu} 5}}};$

and the largest y1 that satisfy

${\begin{pmatrix} y_{2} \\ 1 \end{pmatrix} < {31 - 20 - 10}} = {1\mspace{14mu} {is}\mspace{14mu} 1.}$

Thus i=31 encodes to the permutation Π={10111001}.

B. Noise-Free Case

Since

${\begin{pmatrix} n \\ k \end{pmatrix} < 2^{n}},{\Omega < 1}$

and even a small n value (e.g., n=10) can at most lead to 20% rate loss at the peak value. For moderate n values (e.g., n=100), the loss is less than 4%. Note that the curves for n=500 and n=1000 are almost on top of each other and using permutation codes longer than 500 has marginal impact on Ω. For small n or k values, one can use look-up tables that enumerate the codewords and assign unique indices to distinct messages. For large n and k values however efficient methods such as provided in the previous section are needed.

The encoding algorithm that achieves the rate

$\Omega = {{\log_{2}\left\lbrack \begin{pmatrix} n \\ k \end{pmatrix} \right\rbrack}/n}$

in the absence of noise encompasses the following steps:

Algorithm A3 [Encoding Algorithm] STEP-1: Remove L bits from the head of the primary user's backlogged data and map onto k symbols {s1, . . . , sk}. STEP-2: Remove M bits from the head of secondary user's backlogged data to form the codeword CWB = {b₁b₂ . . . b_(M)}. The unique index ${value}\mspace{14mu} i\mspace{14mu} {for}\mspace{14mu} {this}\mspace{14mu} {codeword}\mspace{14mu} {is}\mspace{14mu} {its}\mspace{14mu} {decimal}\mspace{14mu} {representation}\text{:}\mspace{14mu} i\mspace{14mu} \bullet \mspace{14mu} {\sum\limits_{l = 1}^{M}{b_{i} \cdot {2^{l - 1}.}}}$ ${Thus},{i\mspace{14mu} {can}\mspace{14mu} {be}\mspace{14mu} {any}\mspace{14mu} {integer}\mspace{14mu} {in}\mspace{14mu} {the}\mspace{14mu} {{{interval}\mspace{14mu}\left\lbrack {0,{\begin{pmatrix} n \\ k \end{pmatrix} - 1}} \right\rbrack}.\mspace{14mu} M}\mspace{14mu} {is}\mspace{14mu} {picked}\mspace{14mu} {as}}$ ${{{follows}.\mspace{14mu} {If}}\mspace{14mu} {\log_{2}\left\lbrack \begin{pmatrix} n \\ k \end{pmatrix} \right\rbrack}\mspace{14mu} {is}\mspace{14mu} {integer}},{{{then}\mspace{14mu} M} = {{{\log_{2}\left\lbrack \begin{pmatrix} n \\ k \end{pmatrix} \right\rbrack}.\mspace{14mu} {Else}}\mspace{14mu} {if}\mspace{14mu} {\log_{2}\left\lbrack \begin{pmatrix} n \\ k \end{pmatrix} \right\rbrack}}}$ ${{{is}\mspace{14mu} {not}\mspace{14mu} {an}\mspace{14mu} {integer}\mspace{14mu} {and}\mspace{14mu} \left\lceil {\log_{2}\left\lbrack \begin{pmatrix} n \\ k \end{pmatrix} \right\rbrack} \right\rceil} - {{th}\mspace{14mu} {bit}\mspace{14mu} {is}\mspace{14mu} 0}},{{{then}\mspace{14mu} M} = {\left\lfloor {\log_{2}\left\lbrack \begin{pmatrix} n \\ k \end{pmatrix} \right\rbrack} \right\rfloor.}}$ ${{Else}\mspace{14mu} {if}\mspace{14mu} {\log_{2}\left\lbrack \begin{pmatrix} n \\ k \end{pmatrix} \right\rbrack}\mspace{14mu} {is}\mspace{14mu} {not}\mspace{14mu} {an}\mspace{14mu} {integer}\mspace{14mu} \left\lceil {\log_{2}\left\lbrack \begin{pmatrix} n \\ k \end{pmatrix} \right\rbrack} \right\rceil} - {{th}\mspace{14mu} {bit}\mspace{14mu} {is}\mspace{14mu} 1\mspace{14mu} {and}}$ ${{\sum{\left\lceil {\log_{2}\left\lbrack \begin{pmatrix} n \\ k \end{pmatrix} \right\rbrack} \right\rceil {b_{i} \cdot 2^{l - 1}}}} \leq {\begin{pmatrix} n \\ k \end{pmatrix} - 1}},{{{then}\mspace{14mu} M} = {\left\lceil {\log_{2}\left\lbrack \begin{pmatrix} n \\ k \end{pmatrix} \right\rbrack} \right\rceil .^{3}}}$ STEP-3: Map i to a unique permutation Π_(i) of the codeword CW₀ = {11 . . . 10 . . . 0} of which the first k positions are all l's and the remaining (n − k) positions are all 0's. Such a mapping can be done using Algorithm A2. Denote by location[0 , j] the location of j-th zero and location[1, j] the location of j-th one. STEP-4: Construct the codeword CW = {cwj} such that cw_(location[0,l]) = o for l = 1, . . . , n − k (i.e., silent symbols correspond to zeros of the permutation code constructed in STEP-3) and cw_(location[1,l]) = s_(l) for l = 1, . . . , k (i.e., the symbols in their original transmission order are mapped onto the ones of the permutation code).

Algorithm A3 describes the encoding algorithm assuming that s_(j)'s are scalars. If s_(j)'s are complex numbers, one can apply the algorithm by first considering the real part of s_(j)'s and then the imaginary parts as the following example presents. Suppose n=8 and the symbols s_(j) are QPSK symbols with mapping s⁽⁰⁾=e^(jπ/4)→00, s^((1)=e) ^(j3π/4)→10, s⁽²⁾e^(j5π/4)=→11, s⁽³⁾=e^(j7π/4)→01. Let the primary user have 10 bits {0110001101} waiting in her buffer, which maps to the following 5 symbols s={s³, s¹, s⁰, s², s³}. Take the real part of s and form s _(re)={s_(re) ⁽³⁾, s_(re) ⁽¹⁾, s_(re) ⁽⁰⁾, s_(re) ⁽²⁾, s_(re) ⁽³⁾,}. Then apply the encoding algorithm by using s ^(r) first as the input from the primary user. Suppose the secondary user has 20 bits {10010100100010101111} in his queue with the leftmost bit as the first bit to transmit. Since

${{\log_{2}\left\lbrack \begin{pmatrix} 8 \\ 5 \end{pmatrix} \right\rbrack} = 5.8074},$

the sixth bit is 1 and

${{\left\{ 100101 \right\} \equiv 41 \leq {\begin{pmatrix} 8 \\ 5 \end{pmatrix} - 1}} = 55},$

M=6 and i=41 due to STEP-2 in A3. Using A2, location[0, 3]=7, location[0, 2]=4, location[0, 1]=0 and ┌={01110110}. Therefore, STEP-4 applied to s _(re) with Π={01110110} generates the (real part of the) codeword CW_(re)={os_(re) ⁽³⁾, s_(re) ⁽¹⁾, s_(re) ⁽⁰⁾, os_(re) ⁽²⁾, s_(re) ⁽³⁾0}.

Similarly, take the imaginary part of s and form s _(im)={s_(in) ⁽³⁾, S_(im) ⁽¹⁾, s_(im) ⁽⁰⁾, s_(im) ⁽²⁾, s_(im) ⁽³⁾,}. Since 6 bits are removed from the secondary user's queue, there are 14 bits {00100010101111} backlogged. Because

${\log_{2}\left\lbrack \begin{pmatrix} 8 \\ 5 \end{pmatrix} \right\rbrack} = 5.8074$

and the sixth bit is 0, M=5 and {00100} is removed from the buffer rendering i=4 due to STEP-2 in A3. Using A2, location[0, 3]=4, location[0, 2]=1, location[0, 1]=0 and Π={00110111}. Thus, STEP-4 applied to s _(im) with Π={00110111} generates the (imaginary part of the) codeword CW_(im)={oos_(im) ⁽³⁾, s_(im) ⁽¹⁾, os_(im) ⁽⁰⁾, s_(im) ⁽²⁾, s_(im) ⁽³⁾,}. CW_(re) and CW_(im) are then transmitted in parallel as in-phase and quadrature components over orthogonal dimensions. During the silent symbol epochs, the transmitter keeps silent setting the power mask level to zero.

The decoding algorithm in each degree of freedom performs the following operations at the primary user's receiver. In the absence of noise and interference, using block fading assumption, primary user receives y₁=h₁. CW and can perfectly identify the silent epochs whenever h₁₁≠0 in each orthogonal direction. The silent symbols are then discarded and the actual symbols received in a resource block are grouped together in the order they were received and the normal decoding operation is resumed.

The secondary user on the other hand receives y₂=h₁₂·CW and similar to the primary user's case can perfectly identify the silent epochs whenever h₁₂≠0 in each orthogonal direction. The following steps are involved in the decoding operation in each degree of freedom:

Algorithm A4 [Decoding Algorithm at the Secondary User] STEP-1: Given y₂, identify the silent epochs and construct the binary permutation Π_(j) of length n with k ones as an estimate of the actually used permutation Π_(i) at the sender. If Π_(j) ≠ Π_(i), an error has occurred. ${{STEP}\text{-}2\text{:}\mspace{14mu} {Run}\mspace{14mu} {Algorithm}\mspace{14mu} A\; 1\mspace{14mu} {to}\mspace{14mu} {find}\mspace{14mu} {index}\mspace{14mu} j} \in {\left\lbrack {0,{\begin{pmatrix} n \\ k \end{pmatrix} - 1}} \right\rbrack.}$ ${{STEP}\text{-}3\text{:}\mspace{14mu} {Compute}\mspace{14mu} {the}\mspace{14mu} {binary}\mspace{14mu} {representation}\mspace{14mu} {of}\mspace{14mu} j\mspace{14mu} {in}\mspace{14mu} M} = \left\lceil {\log_{2}\left\lbrack \begin{pmatrix} n \\ k \end{pmatrix} \right\rbrack} \right\rceil$ digits. If M-th most significant digit is zero, discard the M-th digit and pass the first (M − 1) bits as the decoded bits with the least significant bit as the first bit being received. If M-th digit is one, declare all M bits as the decoded bits again with the least significant bit as the first bit being received.

C. With Noise

In the presence of Gaussian noise and interference, the received signals at the primary and the secondary users become:

y ₁ =h ₁₁ ·CW+n ₁ ; y2=h ₁₂ ·CW+n ₂,

where n_(i) and n₂ are both assumed to be composed of zero-mean Gaussian noise terms with variance σ2. Both receivers are assumed to know their respective channel gains and the constellation being used perfectly. For the sake of simplicity let symbols s_(i) be real scalars from the set S={−(2t−1)a, −(2t−3)a, . . . , −a, a, . . . , (2t−1)a} with cardinality |S|=2t. The parameter a is picked such that E[s_(i) ²]=P. Thus, SINR values at the primary and the secondary users are ∥h₁₁∥²P/σ²∥h₁₂∥²P/σ², respectively.

Next, two different pairs of encoding and decoding strategies are presented. The first strategy (referred to as uncoded strategy) solely relies on making a correct hypothesis testing at each symbol epoch, whereas the second strategy (referred to as coded strategy) try to mimic some of the elements of the encoding strategy used by random permutations, albeit with finite length deterministic coding followed by suboptimum decoding.

1) Uncoded Strategy: The base station constructs the codeword CW as in the noise-free case using Algorithm A3. At the receiver frontend, both primary and secondary users employ a symbol by symbol maximum likelihood (ML) hypothesis testing to figure out the permutation sequence Π used at the transmitter.

Let H₀ denote the hypothesis that a particular symbol epoch is silent and H1 denote the hypothesis that an actual transmission from S is occurred during the same epoch. Per symbol ML rule for hypothesis testing is given by: decide H₀ if and only if Prob(y|H₀)≧Prob(y|H₁). Here, we drop the subscripts from y and h as the channel models are the same for both receivers except for the SINR. Since

${{{Prob}\left( {yH_{0}} \right)} = {\frac{1}{\sqrt{2\; \pi \; \sigma^{2}}}{\exp \left( {- \frac{y^{2}}{\sigma^{2}}} \right)}}};$ ${{Prob}\left( {yH_{1}} \right)} = {\frac{1}{2\; t}{\sum{\frac{1}{\sqrt{2\; \pi \; \sigma^{2}}}{\exp \left\lbrack {- \frac{\left( {y - {hs}} \right)^{2}}{\sigma^{2}}} \right\rbrack}}}}$

ML-rule becomes: Decide H₀ if and only if⁴

$\begin{matrix} {{\frac{1}{2\; t}\sum\limits_{l = 1}^{t}} = {{\left\lbrack \frac{{- {h}^{2}}\left( {{2\; l} - 1} \right)^{2}a^{2}}{2\; \sigma^{2}} \right\rbrack \begin{Bmatrix} {{\exp \left\lbrack {- \frac{y{h}\left( {{2\; l} - 1} \right)a}{\sigma^{2}}} \right\rbrack} +} \\ {\exp \left\lbrack \frac{y{h}\left( {{2\; l} - 1} \right)a}{\sigma^{2}} \right\rbrack} \end{Bmatrix}} \leq 1.}} & (10) \end{matrix}$

After symbol by symbol hypothesis testing, both the primary user and secondary user follow the steps of noise-free case. Therefore, if hypothesis testing fails in any of the n epochs, then a wrong permutation {circumflex over (Π)} is decoded. This creates a false decoding operation at the secondary user (unless the device uses an error detection/correction capability in the permutation coding layer). After receiving full MAC packets, such errors can be detected by the CRC codes employed at the MAC layer of the secondary user. Wrong permutation decisions at the primary user, however, do not necessarily mean that the actual symbols cannot be recovered. To be more specific, if the false permutation leads to an error correctable by the channel code used for the primary user's payload, the primary user is not impacted. For instance, suppose Π={01101} and {circumflex over (Π)}={10101}. Remember that in the noise-free decoding, the primary user simply discards the symbol epochs corresponding to zero locations in the permutation code and non-zero locations are assumed to preserve the original order of symbol generation. Hence, the decision {circumflex over (Π)}={10101} would wipe out s₁, but s₂ and s₃ can still be decoded. If the channel code can recover from single symbol loss, then we can correct the false decision done at the hypothesis testing stage. Now consider the case where {circumflex over (Π)}={00111}. Although only one position in the permutation code is erroneous, the other symbols become out of order creating a completely garbled input for the primary receiver's decoder.

Therefore, below, a failure at the hypothesis testing stage is assumed to be non-recoverable by the channel code used for the primary user's payload to handle the Gaussian noise and interference channel. In contrast, once the correct hypothesis testing has been obtained and primary user's symbols are correctly grouped together, channel decoding can resume as if no permutation coding was present in the first place from the primary user point of view. To compensate for errors in the hypothesis testing of both the primary and secondary receivers, we can add extra layers of error protection as discussed next.

2) Coded Strategy: If the per symbol error rate is p_(e,) the block error rate P_(e) becomes 1−(1−p_(e))^(n) with independent losses. To improve the block error rate, one can focus on the permutation code design with errors to compensate for the per symbol hypothesis testing errors. Instead, in one embodiment, an error protection mechanism that makes use of earlier observations is used: (i) primary user does not need to know the permutation code being used. Instead, it can be treated just as a multiplicative noise factor as we did when utilizing the achievable capacity results through mutual information and the receiver can focus on the decoding of the original payload symbols; (ii) when the resource utilization is a<0.5, rate for the secondary user is not lower than when the resource utilization is in the interval [a, 1−a]. Hence, there is a safety margin within which applying lower rate channel coding than the channel capacity requires over the primary user symbols do not result in a rate penalty for the secondary user; and (iii) The efficiency of permutation codes is robust against the size of the permutation code. Accordingly, in one embodiment, the following algorithm is applied to add extra coding gain against errors in hypothesis testing stage.

Algorithm A5 [Encoding Algorithm with FEC Protection] STEP-1: Divide a resource block of length n into m non-overlapping, adjacent, and equal size chunks. Each chunk consists of {circumflex over (n)} = n/m symbols. Enumerate chunks from 1 to m. STEP-2: Take k₀ source symbols {s₁, . . . , s_(k0)} of the primary user and expand it to n encoding symbols {ŝ₁, . . . , ŝ_(n)} using a (k₀, n) forward error correction (FEC) code. Although the method can be used by any channel encoding/decoding strategy that can output n symbols, for the analysis purposes we assume that the FEC code is a maximum distance separable (MDS) code (i.e., its minimum distance is d_(min) = n − k₀ + 1). Divide n encoding symbols equally in their respective order into m groups, i.e., each group has {circumflex over (n)} encoding symbols. Enumerate each group of symbols from 1 to m. STEP-3: To achieve a target utilization level of θ = k/n, allow {circumflex over (k)} = k/m transmissions in each chunk. Thus, each chunk can enumerate up to $\begin{pmatrix} \hat{n} \\ \hat{k} \end{pmatrix}\mspace{14mu} {distinct}\mspace{14mu} {permutation}\mspace{14mu} {{codes}.}$ STEP-4: For chunk numbers κ = 1 to {circumflex over (m)} ≦ m: ${\left. 1 \right)\mspace{14mu} {Remove}\mspace{14mu} M^{l}} = {\left\lfloor {\log_{2}\left\lbrack \begin{pmatrix} \hat{n} \\ \hat{k} \end{pmatrix} \right\rbrack} \right\rfloor \mspace{14mu} {bits}\mspace{14mu} {of}\mspace{14mu} {secondary}\mspace{14mu} {user}\mspace{14mu} {and}\mspace{14mu} {compute}\mspace{14mu} {the}}$ corresponding index number iκ according to STEP-2 of Algorithm A3. Save M^(l) bits in B_(κ). 2) Compute the unique permutation Πiκ corresponding to the iκ according to STEP-3 of Algorithm A3. STEP-5: Concatenate B_(κ)'s from κ = 1 to {circumflex over (m)}. Thus, a source block of length $\hat{m}\left\lfloor {\log_{2}\left\lbrack \begin{pmatrix} \hat{n} \\ \hat{k} \end{pmatrix} \right\rbrack} \right\rfloor \mspace{14mu} {is}\mspace{14mu} {obtained}\mspace{14mu} {or}\mspace{14mu} {equivalently}\mspace{14mu} a\mspace{14mu} {source}\mspace{14mu} {block}\mspace{14mu} {of}\mspace{14mu} {{length}\mspace{14mu}}^{\hat{}}m$ ${{with}\mspace{14mu} {elements}\mspace{14mu} {from}\mspace{14mu} {Galois}\mspace{14mu} {field}\mspace{14mu} {{GF}\left( {2q} \right)}\mspace{14mu} {where}\mspace{14mu} q} = {\left\lfloor {\log_{2}\left\lbrack \begin{pmatrix} \hat{n} \\ \hat{k} \end{pmatrix} \right\rbrack} \right\rfloor \mspace{14mu} {is}}$ obtained. STEP-6: Expand the source block to length m using a systematic (m, {circumflex over (m)}) MDS code over field GF(2^(q)). Assign each parity block to chunks κ = {circumflex over (m)} + 1 to m in the order they are generated. Generate the corresponding index numbers and permutations according to the operations in Algorithm A3. STEP-7: Concatenate the permutation codes Π_(iκ)from κ = 1 to m to form Π^((m)). Denote by location[0, j] the location of j-th zero and location[1, j] the location of j-th one for Π^((m)). STEP-8: Construct the codeword CW ={_(cwj)} such that cw_(location[0,l]) = o for l = 1, . . . , n − k (i.e., silent symbols correspond to zeros of Π^((m))) and cw_(location[1,l])= ŝl for l = 1, . . . , k. In other words, the permutation code erases the encoding symbols generated for the primary user in a unique pattern.

Note that Π^((m)) is generated with respect to the secondary user's payload, therefore this erasure operation at the transmitter site will lead to a multiplicative non-Gaussian noise independent of the primary user information. There are couple of intricate points worth to emphasize here. Firstly, at the expense of abuse of notation {s₁, . . . , s_(k0)} denotes the symbols before the channel coding unlike the case in uncoded strategy where {s₁, . . . , s_(k)} denoted the symbols after the channel coding. In both cases, k denotes the actual number of transmissions from the sender side and the notation k₀ is introduced in the coded case to differentiate the actual number of payload symbols for the primary user. In the coded strategy, depending on the value of k₀ and n, the target utilization k≧k₀ impacts the decoding performance as it will be more rigorously stated in the next section. Secondly, two different channel codes are applied; one for the primary user at STEP-2 and one for the secondary user at STEP-6. The code used for the primary user helps in bypassing the hypothesis testing stage completely. The code used for the secondary user can be though of boosting the performance of the hypothesis testing stage that is needed to perform permutation code decoding. Thirdly, Algorithm A5 makes a rate-error performance tradeoff6 through the parameters k, m, and {circumflex over (m)}:

${{r_{B}\frac{\hat{m} \cdot \left\lfloor {\log_{2}\left\lbrack \begin{pmatrix} \hat{n} \\ \hat{k} \end{pmatrix} \right\rbrack} \right\rfloor}{n}} = {\gamma_{1} \cdot \gamma_{2 \cdot \Omega}}},$

where

$\gamma_{1} = \frac{\hat{m}}{m}$

is the coding rate for the secondary user,

${\gamma \; 2}==\frac{\hat{m} \cdot \left\lfloor {\log_{2}\left\lbrack \begin{pmatrix} \hat{n} \\ \hat{k} \end{pmatrix} \right\rbrack} \right\rfloor}{\log_{2}\left\lbrack k_{0}^{n} \right\rbrack}$

is the rate penalty paid (or the award gained) by target utilization θ=k/n and dividing the resource block into smaller chunks, and Ω is the permutation code rate of uncoded strategy. Unlike y₁, y₂ is not necessarily less than or equal to 1 when k₀<n/2 and m is small.

Unlike the uncoded strategy, the primary user skips the hypothesis testing stage in the decoding operations. The receiver directly attempts to perform channel decoding as if no permutation coding were present. The permutation coding simply acts as another (non-Gaussian) error source.

On the other hand, the secondary user first performs per-symbol hypothesis testing as before. Then, each chunk is labeled as erasure or received using the implicit error detection capability of the permutation codes: each chunk must have ({circumflex over (n)}−{circumflex over (k)}) non-silent symbols. Therefore, one can readily label a chunk as erasure if the number of silent symbols detected is not equal to ({circumflex over (n)}−{circumflex over (k)}) in a given chunk. Otherwise, it is labeled as received. Error detection is in err if and only if a chunk is labeled as received but the permutation was flipped to another valid permutation. Once each chunk is labeled, decoding operation proceeds with the knowledge of erasures. Each chunk first decoded into M¹ bits using permutation decoding. Since an MDS code is employed with minimum distance dmin=m−̂m+1, e erasures and t errors can be corrected as long as 2t+e<d_(min) [9]. Hence, FEC decoding generates {circumflex over (m)} symbols of length M¹ bits. {circumflex over (m)}·M¹ bits are then passed to the MAC layer of the secondary user for further defragmentation, packet reconstruction, and CRC validation.

An Example of a Base Station Embodiment

FIG. 9 is a block diagram of one embodiment of a base station that includes a network interface 1001, baseband processing 1102 and front and/RF unit signal block 1003. Baseband processing 1002 encodes the signals for transmission, including the encoding baseband above. Signal block 1003 includes the upconverter to upconvert signals at intermediate frequency up to a frequency from transmission. Signal block 1003 also includes down converter to down convert received signals to intermediate frequency, which are input to baseband processing 1002 for decoding.

Whereas many alterations and modifications of the present invention will no doubt become apparent to a person of ordinary skill in the art after having read the foregoing description, it is to be understood that any particular embodiment shown and described by way of illustration is in no way intended to be considered limiting. Therefore, references to details of various embodiments are not intended to limit the scope of the claims which in themselves recite only those features regarded as essential to the invention. 

1. A method for use in a cellular system in which a channel allocated to a primary user is underutilized at times, the method comprising: creating a unique 0-1 valued permutation code to transmit bits of a secondary user on a channel of the primary user; creating one or more codewords based on a first set of symbols to be transmitted for the primary user and the permutation code; and transmitting the one or more codewords on the channel.
 2. The method defined in claim 1 further comprising applying channel coding to a second set of symbols to be transmitted to the primary user on the channel to create the first set of symbols, and further wherein creating the one or more codewords comprises applying symbol by symbol multiplication to the first set of symbols and the permutation code.
 3. The method defined in claim 1 further comprising inserting silent symbols in between at least some of the symbols to be transmitted for the primary user.
 4. The method defined in claim 3 wherein the bits are modulated into a unique permutation of a 0-1 vector with k 1's and (n−k) 0's, where k is the number of symbols to be transmitted for the primary user and n is a number of symbols being transmitted on the channel.
 5. The method defined in claim 1 further comprising processing the one or more codewords using a decoder at the secondary user by: locating silent symbol locations to find the permutation code; and inverting the permutation code to recover the bits of the secondary user.
 6. The method defined in claim 1 further comprising processing the one or more codewords using a decoder at the primary user by: locating silent symbol locations; discarding located silent symbols; and decoding symbols remaining after discarding the located silent symbols from the one or more codewords.
 7. The method defined in claim 1 further comprising processing the one or more codewords using a decoder at the primary user by directly decoding the one or more codewords while treating the permutation code as multiplicative noise.
 8. The method defined in claim 1 further comprising: dividing the bits of the secondary user into a plurality of chunks; applying channel coding to a number of chunks in the plurality of chunks to created encoded chunks; and applying the permutation code to each of the encoded chunks; and further wherein creating one or more codewords comprises applying concatenation to combine permutation codes associated with each of the encoded chunks.
 9. A cellular system comprising: a primary user; a secondary user; a base station communicably coupled to the primary and secondary users, and having: a controller to allocate a channel to the primary user that is underutilized by the primary user at times, a memory to store bits to be transmitted, a processor coupled to the memory to process the bits by creating a unique permutation code to transmit bits of a secondary user on a channel of the primary user, creating one or more codewords based on a first set of symbols to be transmitted for the primary user and the permutation code, and transmitting the one or more codewords on the channel.
 10. The system defined in claim 9 wherein the processor is operable to apply channel coding to a second set of symbols to be transmitted to the primary user on the channel to create the first set of symbols, and the processor is operate to create the one or more codewords by applying symbol by symbol multiplication to the first set of symbols and the permutation code.
 11. The system defined in claim 9 wherein the processor is operable to insert silent symbols in between at least some of the symbols to be transmitted for the primary user.
 12. The system defined in claim 11 wherein the bits are modulated into a unique permutation of a 0-1 vector with k 1's and (n−k) 0's, where k is the number of symbols to be transmitted for the primary user and n is a number of symbols being transmitted on the channel.
 13. The system defined in claim 9 wherein the secondary user is operable to process the one or more codewords using a decoder at the secondary user by: locating silent symbol locations to find the permutation code; and inverting the permutation code to recover the bits of the secondary user.
 14. The system defined in claim 9 wherein the primary user is operable to process the one or more codewords using a decoder at the primary user by: locating silent symbol locations; discarding located silent symbols; and decoding symbols remaining after discarding the located silent symbols from the one or more codewords.
 15. The system defined in claim 9 wherein the primary user is operable to process the one or more codewords using a decoder at the primary user by directly decoding the one or more codewords while treating the permutation code as multiplicative noise.
 16. The system defined in claim 9 wherein the processor is operable to: divide the bits of the secondary user into a plurality of chunks; apply channel coding to a number of chunks in the plurality of chunks to created encoded chunks; and apply the permutation code to each of the encoded chunks; and further wherein creating one or more codewords comprises applying concatenation to combine permutation codes associated with each of the encoded chunks.
 17. A base station for use in a cellular system having primary and secondary users, the base station comprising: a controller to allocate a channel to the primary user that is underutilized by the primary user at times, a memory to store bits to be transmitted, a processor coupled to the memory to process the bits by creating a unique permutation code to transmit bits of a secondary user on a channel of the primary user, creating one or more codewords based on a first set of symbols to be transmitted for the primary user and the permutation code, and transmitting the one or more codewords on the channel.
 18. An article of manufacture having one or more computer readable storage media storing instructions thereon which when executed by a system cause the system to perform a method for use in a cellular system in which a channel allocated to a primary user is underutilized at times, the method comprising: creating a unique permutation code to transmit bits of a secondary user on a channel of the primary user; creating one or more codewords based on a first set of symbols to be transmitted for the primary user and the permutation code; and transmitting the one or more codewords on the channel.
 19. A device for use in a wireless communication system, the device comprising: a silent symbol detector to detect silent symbol locations to find the permutation code; and a permutation code decoder operable to receive the permutation code to recover bits by inverting the permutation code.
 20. A device for use in a wireless communication system, the device comprising: a silent symbol detector to detect silent symbol locations; a silent symbol discarder to discard located silent symbols; and a decoder to decode symbols remaining after discarding the located silent symbols from the one or more codewords. 